package com.googlecode.agscrum.controller.spring;

import org.acegisecurity.ConfigAttribute;
import org.acegisecurity.ConfigAttributeDefinition;
import org.acegisecurity.SecurityConfig;
import org.acegisecurity.intercept.web.PathBasedFilterInvocationDefinitionMap;

public class UrlPatternRolesDefinitionSource extends
		PathBasedFilterInvocationDefinitionMap {

	public UrlPatternRolesDefinitionSource() {
		ConfigAttributeDefinition configDefinition = new ConfigAttributeDefinition();
		ConfigAttribute config = new SecurityConfig("ALL");
		configDefinition.addConfigAttribute(config);
		addSecureUrl("/pages/**", configDefinition);
	}

	// @Autowired
	// @Qualifier("roleService")
	// private RoleService roleService;
	// @Autowired
	// @Qualifier("resourceRepository")
	// private Repository<Resource, Long> resourceRepository;
	// private Set<Resource> resources;
	//
	// public Set<Resource> getResources() {
	// if (resources == null) {
	// resources = new HashSet<Resource>();
	// resources.addAll(resourceRepository.findAll());
	// }
	// return resources;
	// }
	//
	// public void setRoleService(RoleService roleService) {
	// this.roleService = roleService;
	// }

	// @Override
	// public ConfigAttributeDefinition lookupAttributes(String arg0) {
	// List<Role> roles;
	// try {
	// Resource resource = new Resource(arg0.replaceAll("\\?.*", ""));
	// if (getResources().contains(resource)) {
	// roles = roleService.getRolesByResource(resource);
	// if (roles != null && roles.size() > 0) {
	// ConfigAttributeDefinition configDefinition = new
	// ConfigAttributeDefinition();
	// for (Role role : roles) {
	// ConfigAttribute config = new SecurityConfig(role
	// .getName());
	// configDefinition.addConfigAttribute(config);
	// }
	// return configDefinition;
	// }
	// } else if (!arg0.contains("login.jsf") && arg0.contains(".jsf")
	// && !arg0.contains("a4j") && !arg0.contains("/web")
	// && !arg0.contains("changePassword.jsf")
	// && !arg0.contains("reportView.jsf")
	// && !arg0.contains("rememberPassword.jsf")) {
	// ConfigAttributeDefinition configDefinition = new
	// ConfigAttributeDefinition();
	// ConfigAttribute config = new SecurityConfig("conflict");
	// configDefinition.addConfigAttribute(config);
	// return configDefinition;
	// }
	//
	// } catch (Exception e) {
	// e.printStackTrace();
	// }
	//
	// return super.lookupAttributes(arg0);
	// }
	//

	@Override
	public ConfigAttributeDefinition lookupAttributes(String arg0) {
		// TODO Auto-generated method stub
		return super.lookupAttributes(arg0);
	}

	public void init() {

	}
}
